/*
 * sunucuDll.cpp
 *
 *  Created on: 06.01.2013
 *      Author: F.Eke
 *
 * BtutSunucu sinifi platforma bagimli altyapi sinifini 
 * kullanarak derlenecek sekilde derlenir:
 *
 *	BtutSunucu --kullanir--> BtutSunucuWin 	 yada
 *	BtutSunucu --kullanir--> BtutSunucuLinux yada
 *	BtutSunucu --kullanir--> BtutSunucuOsx 	 gibi.
 */

#include "sunucuDll.h"


#define __WIN

#ifdef __WIN
#include "BtutSunucuWin.h"
static BtutSunucuWin* 		sunucuSingletonPtr 	= NULL;

#else // __LINUX -> Qt kullanir

#include <QApplication>
#include "BtutSunucu.h"

static BtutSunucu* 		sunucuSingletonPtr 	= NULL;

static QApplication* 	uygulamaMerkezi 	= NULL;

#endif

DLLFUNCTION const IBtutSunucu* btutSunucuKur()
{
#ifdef __WIN
	if(sunucuSingletonPtr == NULL){
		sunucuSingletonPtr = new BtutSunucuWin();
		sunucuSingletonPtr->sunucuBaslat();
	}

#else // __LINUX -> Qt kullanir
	if(uygulamaMerkezi == NULL){
		uygulamaMerkezi = new QApplication(1, "");
		if(sunucuSingletonPtr == NULL){
			sunucuSingletonPtr = new BtutSunucu();
			// sunucuSingletonPtr->sunucuBaslat();
		}
		uygulamaMerkezi->exec();
	}
#endif

	return (IBtutSunucu*) sunucuSingletonPtr;
}

DLLFUNCTION bool btutSunucuDurdur()
{
#ifdef __WIN
	return true;
#else // __LINUX -> Qt kullanir
	if(uygulamaMerkezi != NULL){
		return uygulamaMerkezi->exit();
	}
#endif	
}

